iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

Android的學習歷程系列 第 5

[Day 5] Android程式設計-使用OpenData資料製作app(四)(kotlin)

  • 分享至 

  • xImage
  •  

進入到程式的部分,首先我習慣先將各個頁面的切換做好,像是A頁面>B頁面、A頁面>C頁面。

開始前可以先把activity_main做一些修改,當作之後各個頁面的容器。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#6CC9C1"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:id="@+id/main_container"
    tools:context=".MainActivity">

</FrameLayout>

activity_main類似下圖藍色區塊,與一般使用不同,這邊在做切換頁面時會一次抽換一整個頁面。
https://ithelp.ithome.com.tw/upload/images/20190921/20121080NPBA221hjC.png

一般使用fragment的清況可能會像下圖一樣只抽換特定區塊。
https://ithelp.ithome.com.tw/upload/images/20190921/20121080GYcDzxG5Ou.png

有了初步的理解後接下來要實作切換頁面的功能,首先開啟三個新檔案步驟如下。
https://ithelp.ithome.com.tw/upload/images/20190921/20121080OzigQzDvUm.png

完成後package會是這個樣子,比原先多了三個檔案。
https://ithelp.ithome.com.tw/upload/images/20190921/20121080oMjcfOXNCJ.png

接下來可以開始頁面的切換了,在這邊提供一個方法,可以做一個共通的函式來幫我們完成切換頁面的工作。

object CommonUtils {

    fun TransFragment(context: Context, id: Int, fragment: Fragment?, tag: String, bundle: Bundle?) {
        if (fragment == null) return
        fragment.arguments = bundle
        val appCompatActivity = context as AppCompatActivity

        appCompatActivity.supportFragmentManager
                .beginTransaction()
                .disallowAddToBackStack()
                .add(id, fragment, tag)
                .commit()
    }
}

完成後只要在我們的MainFragment上使用便能夠方便在要面上做切換。

class MainFragment : Fragment() {

    companion object

    val TAG = MainFragment::class.java.simpleName

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_main, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initViews()
    }

    protected fun initViews() {
        select.setOnClickListener {
            CommonUtils.TransFragment(context!!, R.id.main_container, SelectFragment(), SelectFragment().TAG, null)
        }
        note.setOnClickListener {
            CommonUtils.TransFragment(context!!, R.id.main_container, NoteFragment(), NoteFragment().TAG, null)
        }
    }
}

到這邊便完成了頁面的切換,接下來會在做各部份的詳細說明。


上一篇
[Day 4] Android程式設計-使用OpenData資料製作app(三)(kotlin)
下一篇
[Day 6] Android-Fragment的基本使用方法
系列文
Android的學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言